Skip to content

refactor: migrate MultichainAccountConnect, PrivateKeyList, AddressList, and IntroModal to design-system-react-native#30183

Open
gantunesr wants to merge 10 commits into
mainfrom
gar/refactor/mul-1692
Open

refactor: migrate MultichainAccountConnect, PrivateKeyList, AddressList, and IntroModal to design-system-react-native#30183
gantunesr wants to merge 10 commits into
mainfrom
gar/refactor/mul-1692

Conversation

@gantunesr
Copy link
Copy Markdown
Member

@gantunesr gantunesr commented May 14, 2026

Description

This PR updates MultichainAccountConnect, PrivateKeyList, AddressList, and IntroModal/LearnMoreBottomSheet to use the design-system Toast, Text, BottomSheet, and related types/imports.

Changelog

CHANGELOG entry: null

Related issues

Fixes: https://consensyssoftware.atlassian.net/browse/MUL-1692

Manual testing steps

Feature: Multichain account design system migration

  Scenario: user connects multichain accounts to a dapp
    Given the app receives a multichain account connection request
    When the user reviews the account and network permissions
    And the user confirms the connection
    Then the connection flow completes successfully
    And the permissions updated toast is shown

  Scenario: user copies an address from the Address List
    Given the user is viewing the Multichain Account Address List
    When the user taps the copy button for an address
    Then the address is copied to the clipboard
    And the copied-to-clipboard toast is shown

  Scenario: user reveals and copies a private key
    Given the user is viewing the Private Key List
    When the user enters the correct password
    And taps copy for a private key row
    Then the private key is copied with expiration
    And the copied toast is shown

  Scenario: user opens the Learn More bottom sheet
    Given the Multichain Accounts intro modal is visible
    When the user opens the Learn More bottom sheet
    Then the bottom sheet renders correctly
    And the checkbox enables the confirmation button
    And the back and close buttons dismiss the sheet

Screenshots/Recordings

Screen.Recording.2026-05-14.at.12.45.00.PM.mov
Screen.Recording.2026-05-14.at.12.46.54.PM.mov

Pre-merge author checklist

Performance checks (if applicable)

  • I've tested on Android
    • Ideally on a mid-range device; emulator is acceptable
  • I've tested with a power user scenario
    • Use these power-user SRPs to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production performance metrics

For performance guidelines and tooling, see the Performance Guide.

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Medium Risk
Medium risk because it changes user-facing toast/bottom-sheet behavior in multichain connect and private-key/address copy flows; regressions could affect permission confirmation feedback or clipboard UX, but core business logic is mostly unchanged.

Overview
Migrates MultichainAccounts UI surfaces (MultichainAccountConnect, PrivateKeyList, AddressList, and IntroModal LearnMoreBottomSheet) off the legacy toast/text/bottom-sheet components to the design-system equivalents (toast, Toaster, Text, BottomSheet).

Copy actions in AddressList and PrivateKeyList now explicitly invoke design-system toast() after writing to the clipboard, and the relevant screens/stories mount a Toaster to render notifications. MultichainAccountConnect likewise replaces the permissions-updated toast with a design-system toast that includes a favicon accessory, and tests were updated/added to validate header back behavior and toast calls.

Reviewed by Cursor Bugbot for commit cf795ef. Bugbot is set up for automated code reviews on this repo. Configure here.

…st, and IntroModal to design-system-react-native
@metamaskbotv2 metamaskbotv2 Bot added the team-accounts-framework Accounts team label May 14, 2026
@github-actions github-actions Bot added pr-not-ready-for-e2e Skip E2E and block merging. Remove this label once the PR is ready to run the E2E tests. size-M labels May 14, 2026
@gantunesr gantunesr marked this pull request as ready for review May 14, 2026 17:18
@gantunesr gantunesr requested review from a team as code owners May 14, 2026 17:18
@gantunesr gantunesr removed the pr-not-ready-for-e2e Skip E2E and block merging. Remove this label once the PR is ready to run the E2E tests. label May 14, 2026
@gantunesr
Copy link
Copy Markdown
Member Author

@metamaskbot update-mobile-fixture

@github-actions
Copy link
Copy Markdown
Contributor

🔄 Fixture update started. Running workflow from branch gar/refactor/mul-1692. View workflow runs

@github-actions
Copy link
Copy Markdown
Contributor

E2E fixture update failed.\n\nCommon causes:\n- CI workflow is still running — wait for 'Build iOS Apps' to complete\n- CI workflow was skipped — ensure your PR has iOS-impacting changes or use skip-smart-e2e-selection label\n- iOS build failed — check the CI workflow for errors\n\nView logs and retry

@gantunesr gantunesr added the skip-smart-e2e-selection Skip Smart E2E selection, i.e. select all E2E tests to run label May 15, 2026
@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 50.26%. Comparing base (3751d9a) to head (964b031).
⚠️ Report is 219 commits behind head on main.

Files with missing lines Patch % Lines
...tichainAccountConnect/MultichainAccountConnect.tsx 0.00% 5 Missing ⚠️
...ews/MultichainAccounts/AddressList/AddressList.tsx 0.00% 3 Missing ⚠️
...ltichainAccounts/PrivateKeyList/PrivateKeyList.tsx 0.00% 2 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (3751d9a) and HEAD (964b031). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (3751d9a) HEAD (964b031)
2 1
Additional details and impacted files
@@             Coverage Diff             @@
##             main   #30183       +/-   ##
===========================================
- Coverage   81.54%   50.26%   -31.29%     
===========================================
  Files        5343     5435       +92     
  Lines      142128   144926     +2798     
  Branches    32411    33097      +686     
===========================================
- Hits       115899    72842    -43057     
- Misses      18299    65569    +47270     
+ Partials     7930     6515     -1415     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@gantunesr gantunesr requested a review from a team as a code owner May 15, 2026 13:51
Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a4ccd72. Configure here.

@github-actions
Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

⏭️ Smart E2E selection skipped - skip-smart-e2e-selection label found

All E2E tests pre-selected.

View GitHub Actions results

@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size-M skip-smart-e2e-selection Skip Smart E2E selection, i.e. select all E2E tests to run team-accounts-framework Accounts team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants